Ext.namespace('Ext.bisou')

// 本地数据下拉框combox @author wangyuxin
Ext.bisou.LocalCommonDatabox = Ext.extend(Ext.form.ComboBox, {
			valueField : "returnValue",
			displayField : "displayText",
			triggerAction : "all",
			emptyText : "请选择",
			anchor : '100%',
			editable : false,
			mode : 'local',
			dataurl : '',
			initComponent : function() {
				Ext.bisou.LocalCommonDatabox.superclass.initComponent.apply(
						this, arguments);
				this.store = new Ext.data.SimpleStore({
							fields : ["returnValue", "displayText"],
							data : this.loaclarr
						});
			}
		});
Ext.reg('localcommonbox', Ext.bisou.LocalCommonDatabox);

/**
 * 查询省信息
 * 
 * @author yellow
 * @class Ext.yellow.ComboProvince
 * @extends Ext.form.ComboBox
 */
Ext.bisou.ComboProvince = Ext.extend(Ext.form.ComboBox, {
	valueField : 'id',
	displayField : 'provinceName',
	triggerAction : 'all',// 一定要加
	emptyText : '请选择省',
	editable : true,
	mode : 'remote',
	initComponent : function() {
		Ext.bisou.ComboProvince.superclass.initComponent.apply(this, arguments);
		this.tpl = '<tpl for=".">' + '<div class="x-combo-list-item">{'
				+ this.displayField + '}</div></tpl>';
		this.store = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : __ctxPath
										+ '/addressManager/queryProvince',
								method : 'GET'
							}),
					reader : new Ext.data.JsonReader({
								root : 'list',
								fields : [{
											name : 'id'
										}, {
											name : 'provinceName'
										}]
							})
				});
	}
});
Ext.reg('comboprovince', Ext.bisou.ComboProvince);

// 查询城市信息 @author yellow
Ext.bisou.ComboCity = Ext.extend(Ext.form.ComboBox, {
	valueField : 'id',
	autoLoad : false,
	displayField : 'cityName',
	emptyText : '请选择市',
	editable : true,
	mode : 'remote',
	triggerAction : 'query',
	selectOnFocus : true,
	enableKeyEvents : true,
	initComponent : function() {
		Ext.bisou.ComboCity.superclass.initComponent.apply(this, arguments);
		this.parentProvinceId = this.parentProvinceId;
		this.tpl = '<tpl for="."><div class="x-combo-list-item">{'
				+ this.displayField + '}</div></tpl>';
		this.store = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : __ctxPath
										+ '/addressManager/queryCitysByProvinceId',
								method : 'GET'
							}),
					reader : new Ext.data.JsonReader({
								root : 'list',
								fields : [{
											name : 'id'
										}, {
											name : 'cityName'
										}]
							})
				});
		this.on('beforequery', function(e) {
					var val = Ext.getCmp(this.parentProvinceId).getValue();
					if (val != null && val != '') {
						var combo = e.combo;
						Ext.apply(combo.store.baseParams, {
									provinceId : val
								});
					} else {
						Ext.Msg.show({
									title : '提示信息',
									msg : '请先选择省份！',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.WARNING
								});
						return false;
					}
				});

		this.on('focus', function(t) {
					var val = Ext.getCmp(this.parentProvinceId).getValue();
					if (val != null && val != '') {
						Ext.apply(t.store.baseParams, {
									provinceId : val
								});
						t.store.reload();
					}
				});
	}
});
Ext.reg('combocity', Ext.bisou.ComboCity);

// 查询区县 @author yellow
Ext.bisou.ComboRegion = Ext.extend(Ext.form.ComboBox, {
	autoLoad : false,
	displayField : 'regionName',
	triggerAction : 'query',
	emptyText : '请选择区（县）',
	hideTrigger : false,
	editable : true,
	mode : 'remote',
	selectOnFocus : true,
	enableKeyEvents : true,
	initComponent : function() {
		Ext.bisou.ComboRegion.superclass.initComponent.apply(this, arguments);
		this.parentCityId = this.parentCityId;
		this.tpl = '<tpl for="."><div class="x-combo-list-item">{'
				+ this.displayField + '}</div></tpl>';
		this.store = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : __ctxPath
										+ '/addressManager/queryRegionsByCityId',
								method : 'GET'
							}),
					reader : new Ext.data.JsonReader({
								root : 'list',
								fields : [{
											name : 'id'
										}, {
											name : 'regionName'
										}]
							})
				});
		this.on('beforequery', function(e) {
					var val = Ext.getCmp(this.parentCityId).getValue();
					if (val != null && val != '') {
						var combo = e.combo;
						Ext.apply(combo.store.baseParams, {
									cityId : val
								});
					} else {
						Ext.Msg.show({
									title : '提示信息',
									msg : '请先选择城市！',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.WARNING
								});
						return false;
					}
				});

		this.on('focus', function(t) {
					var val = Ext.getCmp(this.parentCityId).getValue();
					if (val != null && val != '') {
						Ext.apply(t.store.baseParams, {
									cityId : val
								});
						t.store.reload();
					}
				});
	}
});
Ext.reg('comboregion', Ext.bisou.ComboRegion);

/**
 * 数据字典中查询指定分类下的值
 * 
 * @author hejinguo
 * @class Ext.bisou.dataDictionaryCmb
 * @extends Ext.form.ComboBox 用法:dictionaryType是对应数据库表中父类的value值,
 *          existall是表示是否需要显示全部, removeDate是排除查询出来的数据中需要排除的数据的value值,
 *          defaultValue是表示默认的排序
 */
Ext.bisou.dataDictionaryCmb = Ext.extend(Ext.form.ComboBox, {
	dictionaryType : 'dictionaryType',
	emptyText : '请选择',
	existall : false,// 是否显示全部
	useable : true,// 是否只显示可用数据
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	blankText : '没有数据',
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'value' : 'keyes',
			displayField : 'keyes',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath
								+ '/systemDataDictionary/selectDataDictionaryById',
						baseParams : {
							dictionaryType : this.dictionaryType,
							existall : this.existall,
							useable : this.useable
						},
						fields : ['value', 'keyes'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.dataDictionaryCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('dataDictionaryCmb', Ext.bisou.dataDictionaryCmb);

/**
 * 多选下拉框
 * 
 * @class Ext.bisou.dataDictionaryMultiCmb
 * @extends Ext.form.ComboBox
 */
Ext.bisou.dataDictionaryMultiCmb = Ext.extend(Ext.form.ComboBox, {
	dictionaryType : 'dictionaryType',
	emptyText : '请选择',
	existall : false,// 是否显示全部
	useable : true,// 是否只显示可用数据
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	hiddenValueId : this.hiddenValueId,
	blankText : '没有数据',
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'value' : 'keyes',
			displayField : 'keyes',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath
								+ '/systemDataDictionary/selectDataDictionaryById',
						baseParams : {
							dictionaryType : this.dictionaryType,
							existall : this.existall,
							useable : this.useable
						},
						fields : ['value', 'keyes'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.dataDictionaryMultiCmb.superclass.initComponent.call(this);
	},
	tpl : this.tpl
			|| '<tpl for="."><div class="x-combo-list-item"><span><input type="checkbox" {[values.check?"checked":""]} value="{[values.value]}" /></span><span>{keyes}</span></div></tpl>',
	onSelect : function(record, index) {
		if (this.fireEvent('beforeselect', this, record, index) !== false) {
			record.set('check', !record.get('check'));
			var str = [];// 页面显示的值
			var strvalue = [];// 传入后台的值
			this.store.each(function(rc) {
						if (rc.get('check')) {
							str.push(rc.get('value'));
							strvalue.push(rc.get('keyes'));
						}
					});
			this.setValue(strvalue.join());
			if (this.hiddenValueId) {
				var i = Ext.getCmp(this.hiddenValueId);
				i.setValue(str.join());
			}
			this.fireEvent('select', this, record, index);
		}
	},
	reset : function() {
		this.clearAll();
		Ext.bisou.dataDictionaryMultiCmb.superclass.reset.call(this);
	},
	clearAll : function() {
		this.store.clearFilter();
		this.store.each(function(r) {
					r.set('check', false);
				}, this);
		if (this.hiddenField) {
			this.hiddenField.value = '';
		}
		Ext.bisou.dataDictionaryMultiCmb.superclass.setValue.call(this, "");
	}
});
Ext.reg('dataDictionaryMultiCmb', Ext.bisou.dataDictionaryMultiCmb);

/**
 * 主题查询下拉框
 */
Ext.bisou.SubjectCmb = Ext.extend(Ext.form.ComboBox, {
	emptyText : '请选择',
	existall : false,// 是否显示全部
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	statusArr : [],
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'subjectName' : 'id',
			displayField : 'subjectName',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath
								+ '/subjectManager/selectUserableSubjects',
						baseParams : {
							existall : this.existall,
							statusArr : this.statusArr
						},
						fields : ['id', 'subjectName'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.SubjectCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('subjectCmb', Ext.bisou.SubjectCmb);

/**
 * 商品查询下拉框
 */
Ext.bisou.GoodsCmb = Ext.extend(Ext.form.ComboBox, {
	emptyText : '请选择',
	existall : false,// 是否显示全部
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	goodsType : 0,
	statusArr : [],
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'goodsName' : 'id',
			displayField : 'goodsName',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath + '/goodsManager/selectAllGoods',
						baseParams : {
							existall : this.existall,
							statusArr : this.statusArr,
							goodsType : this.goodsType
						},
						fields : ['id', 'goodsName'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.GoodsCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('goodsCmb', Ext.bisou.GoodsCmb);


/**
 * 分类名称下拉框
 */
Ext.bisou.GoodsCategoryCmb = Ext.extend(Ext.form.ComboBox, {
	emptyText : '请选择',
	existall : false,// 是否显示全部
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	statusArr : [],
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'categoryName' : 'id',
			displayField : 'categoryName',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath + '/goodCategoryManager/selectGoodCategoryName',
						baseParams : {
							existall : this.existall,
							statusArr : this.statusArr
						},
						fields : ['id', 'categoryName'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.GoodsCategoryCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('goodsCategoryCmb', Ext.bisou.GoodsCategoryCmb);

/**
 * 查询全部打印机
 * 
 * @class Ext.bisou.getAllPrintServiceCmb
 * @extends Ext.form.ComboBox
 */
Ext.bisou.getAllPrintServiceCmb = Ext.extend(Ext.form.ComboBox, {
	emptyText : '请选择',
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	blankText : '没有数据',
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : 'printName',
			displayField : 'printName',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						url : __ctxPath + '/orderManager/getAllPrintService',
						fields : ['printName'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('printName',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.getAllPrintServiceCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('getAllPrintServiceCmb', Ext.bisou.getAllPrintServiceCmb);

// 规则组
Ext.bisou.RuleGroupCmb = Ext.extend(Ext.form.ComboBox, {
	emptyText : '请选择',
	existall : false,// 是否显示全部
	editable : false,
	autoLoad : false,
	showValue : false,
	triggerAction : 'all',
	removeDate : [],// 排除的记录
	defaultValue : '',// 默认值
	defaultFirstRow : '',
	isEnable : 0,
	initComponent : function() {
		var defConfig = {
			anchor : '100%',
			forceSelection : false,// 是否允许使用用户自己输入的值
			valueField : this.showValue == false ? 'ruleGroupName' : 'id',
			displayField : 'ruleGroupName',
			lazyRender : true,
			mode : 'remote',// local
			store : new Ext.data.JsonStore({
						root : 'list',
						autoLoad : this.autoLoad,
						mehtod : "POST",
						url : __ctxPath + '/couponRuleManager/selectRuleGroup',
						baseParams : {
							existall : this.existall,
							isEnable : this.isEnable
						},
						fields : ['id', 'ruleGroupName'],
						listeners : {
							'load' : function(sto, recs, combo) {
								if (this.defaultValue != '') {
									this.setValue(this.defaultValue);
								}
								if (this.defaultFirstRow != null
										&& this.defaultFirstRow != '') {
									if (sto.getRange()[0] != undefined) { // 默认第一条
										this
												.setValue(sto.getRange()[0].data.value);
									}
								}
								if (this.removeDate) {
									for (var i = 0; i < this.removeDate.length; i++) {
										var temindex = sto.find('value',
												this.removeDate[i])
										if (temindex != -1) {
											sto.removeAt(temindex);
										}
									}

								}
							},
							scope : this
						}
					})
		};
		Ext.applyIf(this, defConfig);
		Ext.bisou.RuleGroupCmb.superclass.initComponent.call(this);
	}
});
Ext.reg('ruleGroupCmb', Ext.bisou.RuleGroupCmb);

// 在Grid中最后一行统计不加序号
Ext.bisou.ResaleRowNumber = Ext.extend(Ext.grid.RowNumberer, {
			renderer : function(v, p, record, rowIndex, columnIndex, store) {
				if (this.rowspan) {
					p.cellAttr = 'rowspan="' + this.rowspan + '"';
				}
				if (rowIndex < store.getCount() - 1) {
					return rowIndex + 1;
				} else if (rowIndex == store.getCount() - 1) {
					return "<b><font style='color:green;font-size:15px'>总计</b>";
				}
			}
		});
